حذف
سریع تمام رکوردها در SQL server فرض کنید یک دیتابیس آزمایشی دارید که میخواهید تمام رکوردهای آنرا حذف کنید. اگر در این دیتابیس انواع و اقسام کلیدهای خارجی و تریگر و امثال آن وجود داشته باشند، صرفا با یک دستور delete ساده کار به پایان نمیرسد و موفق به حذف رکوردها نخواهید شد (چون این قید و بندها به همین جهت طراحی شدهاند تا یکپارچگی دیتابیس حفظ شود).اما اگر واقعا این قیود در این لحظه مهم نبودند و نیاز بود تا تمام رکوردها را حذف کنیم، سریعترین راه حل موجود چیست؟--Disable Constraints & Triggers
exec sp_MSforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? DISABLE TRIGGER ALL'
--Perform delete operation on all table for cleanup
exec sp_MSforeachtable 'DELETE ?'
--Enable Constraints & Triggers again
exec sp_MSforeachtable 'ALTER TABLE ? CHECK CONSTRAINT ALL'
exec sp_MSforeachtable 'ALTER TABLE ? ENABLE TRIGGER ALL'
--Reset Identity on tables with identity column
exec sp_MSforeachtable 'IF OBJECTPROPERTY(OBJECT_ID(''?''), ''TableHasIdentity'') = 1 BEGIN DBCC CHECKIDENT (''?'',RESEED,0) END'اسکریپت فوق تمامی رکوردهای دیتابیس جاری را حذف کرده و همچنین فیلدهای identity را نیز مجددا به حالت اول باز میگرداند. نويسنده :محمد حسین فخرآوری تاريخ: سه شنبه ۱۴۰۱/۱۰/۲۰ ساعت: DBCC OPENTRAN...
ما را در سایت DBCC OPENTRAN دنبال می کنید
برچسب : نویسنده : fakhravary بازدید : 223 تاريخ : جمعه 7 بهمن 1401 ساعت: 12:04